package DAO;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import Hibernate.HibernateUtil;
import Negocio.Usuario;

public class HibernateUsuarioDAO {

		private static HibernateUsuarioDAO instancia = null;
		private static SessionFactory sf = null;
		
		public static HibernateUsuarioDAO getInstancia()
		{
			if(instancia == null)
			{
				instancia = new HibernateUsuarioDAO();
				sf = HibernateUtil.getSessionFactory();
			}
			return instancia;
		}
		
		public void grabarUsuario(Usuario usu)
		{
			try
			{
				Session session = sf.openSession();
				session.beginTransaction();
				session.saveOrUpdate(usu);
				session.flush();
				session.getTransaction().commit();
				session.close();
			}
			catch(Exception e)
			{
				System.out.println(e);
				System.out.println("Error al grabar un Usuario");
			}
		}
		
		public void updateUsuario(Usuario usu)
		{
			try
			{
			Session session = sf.openSession();
			session.beginTransaction();
			session.saveOrUpdate(usu);
			session.flush();
			session.getTransaction().commit();
			session.close();
			}catch (Exception e){
				System.out.println(e);
	            System.out.println("Error al actualizar el Usuario");
			}
			
		}

		
		public Usuario getUsuario(String usuario)
		{
	        try 
	        {
	        	System.out.println("Entro ACA");
	        	System.out.println("Usuario=" + usuario);
	        	Session session=sf.openSession();
	            session.beginTransaction();
	            Usuario usu = (Usuario)session.get(Usuario.class, usuario);
	            session.getTransaction().commit();
	            session.close();
	            return usu;
	        } 
	        catch (Exception e)
	        {
	            System.out.println(e);
	            System.out.println("Error al cargar el Usuario");
	        }
	        return null;
		}	
	
}
